
=============
GS Memory Map
=============
Copyright 1993-1994 Apple Computer, Inc.
All Rights Reserved

*******************************************************************************
APPLE CONFIDENTIAL
*******************************************************************************
This file is intended for the Apple II engineering team.  Much of the stuff
in here is not publicly documented.
*******************************************************************************

Modification History:

25-Jan-93 Dave Lyons    Created file
11-Nov-94 Dave Lyons    Added ROM function pointer table info, and cleaned
	      up in general.

=============================================================================
This is the master memory map for the ROM 1 and ROM 3 GS.
=============================================================================

00/0000..00/07FF	NOT managed by the Memory Manager.
00/0000..00/00FF	Zero page
00/0000  byte	LOC0	EQU $00	;vector for autostart from disk
00/0001  byte	LOC1	EQU $01
00/0006	PRINTTMP	EQU $06	;$06-$08 saved and restore by print rtne
00/0020  byte	WNDLFT	EQU $20	;left edge of text window
00/0021  byte	WNDWDTH	EQU $21	;width of text window
00/0022  byte	WNDTOP	EQU $22	;top of text window
00/0023  byte	WNDBTM	EQU $23	;bottom+1 of text window
00/0024  byte	CH	EQU $24	;cursor horizontal position
00/0025  byte	CV	EQU $25	;cursor vertical position
00/0026  byte	GBASL	EQU $26	;lo-res graphics base addr.
00/0027  byte	GBASH	EQU $27
00/0028  byte	BASL	EQU $28	;text base address
00/0029  byte	BASH	EQU $29
00/002A  byte	BAS2L	EQU $2A	;temp base for scrolling
00/002B  byte	BAS2H	EQU $2B
00/002C  byte	H2	EQU $2C	;temp for lo-res graphics
00/002C  byte	LMNEM	EQU $2C	;temp for mnemonic decoding
00/002D  byte	V2	EQU $2D	;temp for lo-res graphics
00/002D  byte	RMNEM	EQU $2D	;temp for mnemonic decoding
00/002E  byte	MASK	EQU $2E	;color mask for lo-res gr.
00/002E  byte	FORMAT	EQU $2E	;temp for opcode decode
00/002F  byte	LENGTH	EQU $2F	;temp for opcode decode
00/0030  byte	COLOR	EQU $30	;color for lo-res graphics
00/0031  byte	MONMODE	EQU $31	;Monitor mode
00/0032  byte	INVFLG	EQU $32	;normal/inverse(/flash)
00/0033  byte	PROMPT	EQU $33	;prompt character
00/0034  byte	YSAV	EQU $34	;position in Monitor command
00/0035  byte	YSAV1	EQU $35	;temp for Y register
00/0036..00/0037	CSWL..CSWH  character output hook
00/0038..00/0039	KSWL..KSWH  character input hook
00/003A  byte	PCL	EQU $3A	;temp for program counter
00/003B  byte	PCH	EQU $3B
00/003C  byte	A1L	EQU $3C	;Monitor temp
00/003D  byte	A1H	EQU $3D	;Monitor temp
00/003E  byte	A2L	EQU $3E	;Monitor temp
00/003F  byte	A2H	EQU $3F	;Monitor temp
00/0040  byte	A3L	EQU $40	;Monitor temp
00/0041  byte	A3H	EQU $41	;Monitor temp
00/0042  byte	A4L	EQU $42	;Monitor temp
00/0043  byte	A4H	EQU $43	;Monitor temp
00/0044  byte	*A5L            EQU	$44 ;Monitor temp ?????
00/0045  byte	A5H	EQU $45	;Monitor temp
00/0045  byte	*ACC            EQU	$45 ;Acc after break (destroys A5H)
00/0046  byte	XREG	EQU $46	;X reg after break
00/0047  byte	YREG	EQU $47	;Y reg after break
00/0048  byte	STATUS	EQU $48	;P reg after break
00/0049  byte	SPNT	EQU $49	;SP after break
00/004E..004F	RNDL..RNDH	EQU $4E	;random counter

00/0080..???	AppleTalk uses at interrupt time (and then restores)

00/00B1  entry	Applesoft:CHRGET (get next token from running program)
00/00B7  entry	Applesoft:CHRGOT (get same token again)

00/00F8..00FF	Available for temporary use (not used by Monitor or Applesoft)
00/0100..00/01FF	Page-one stack.  See also 01/0100.
00/0100..???	Applesoft builds floating-point numbers here, at the bottom of the stack.
00/0200..00/02FF	Keyboard buffer (used by GETLN).
	The GS/OS Console Driver uses this area, but does not expect
	it to stay valid between console driver calls.
00/0300..00/03CF	Free "page three" space for hacking around; not available
	for apps or the system.
00/03D0..00/03D2	Warmstart vector.  "Q" in the monitor jumps here if there
	is a $4C (JMP) at $3D0.
00/03F0..00/03F1	BRK vector.
00/03F2..00/03F3	Reset vector.
00/03F4  byte	Power-up byte for Reset vector ($3F3 xor $A5).
00/03F5..00/03F7	"&" jump vector for AppleSoft (the following tokens jump to
	here:  &, LOAD, SAVE, STORE, RECALL, SHLOAD).
00/03F8..00/03FA	Ctrl-Y jump vector for Monitor.
00/03FB..00/03FD	NMI jump vector.
00/03FE..00/03FF	IRQ vector for 8-bit land.
00/0400..00/07FF	Main 40-column text screen.
00/0478..00/047F	Screen holes (one for the system, one for each slot).
00/047B  byte	80-column firmware: OLDCH (last CH used by video firmware)
00/04F8..00/04FF	Screen holes.
00/04FB  byte	80-column firmware: MODE (video firmware operating mode)
	* BASIC VMODE BITS
	*
	* 0....... - BASIC active
	* 1....... - Pascal active
	* .0...... - Print mouse chars
	* .1...... - Don't print mouse characters
	* ..0..... - Print control characters
	* ..1..... - Don't print ctrl chars
	* ...0.... -
	* ...1.... -
	* ....0... - Print control characters
	* ....1... - Don't print ctrl chars.
	* .....0.. -
	* .....1.. -
	* ......0. - Scroll normally
00/0578..00/057F	Screen holes.
00/057B  byte	80-column firmware: OURCH (80-column Cursor Horizontal)
00/05F8..00/05FF	Screen holes.
00/05FB  byte	80-column firmware: OURCV (80-column Cursor Vertical)
00/0678..00/067F	Screen holes.
00/067B  byte	80-column firmware: CHAR (character to be printed/read)
00/06F8..00/06FF	Screen holes.
00/06FB  byte	80-column firmware: XCOORD (GOTOXY X-coord, Pascal mode only)
00/0778..00/077F	Screen holes.
00/077B  byte	80-column firmware: OLDBASL (last BASL, Pascal mode only)
00/07F8..00/07FF	Screen holes.
00/07F8  byte	MSLOT.  $Cn means that slot N owns the $C800..CFFE space.
	Important for interrupt handling, so we can put the old
	owner back in charge when returning from the interrupt.
	The 80-column firmware uses this as a weird flag, so if
	you try to look at it in the monitor, the value will go
	away (it gets shifted right one bit on each character
	displayed).
00/07FB  byte	80-column firmware: OLDBASH (last BASH, Pascal mode only)

00/0800..00/BFFF	Managed by the Memory Manager.
00/0800..00/0CFF	Page 2 40-column text screen.
00/0800..00/09FF	Booting a disk loads block 0 here and jumps to $801.
00/1000..00/12FF	ProDOS 8 copies the Quit code here and jumps to it.
00/2000..00/BEFF	SYS programs get loaded here.  Including the ProDOS
	file, whether it be ProDOS 8 or the GS/OS ProBoot file.
00/2000..00/3FFF	Hi-Res page 1.
00/4000..00/5FFF	Hi-Res page 2.
00/6800..	Start.GS.OS gets loaded here by the "ProBoot" ProDOS file.
00/B9F0..00/B9FD	GS/OS globals (private)
00/B9F0  word	dev_start_flag (set to nonzero during device dispatcher startup)
00/B9F2  long	fst_tbl_ptr (set by SCM to point to FST table)
00/B9F6  word	sys_prefs (as in GetSysPrefsGS/SetSysPrefsGS).  DoSysPrefs in the
	Miscellaneous Tools (6.0.1) hard-codes this address for fast access!
00/B9F8  word	non-zero if get_dnum finds a character device
00/B9FA  word	post_index (number of drivers remaining to install)
00/B9FC  word	current_speed
00/B9FE  word	session_stat ($0000 = no session, $0001 = session in progress)
00/BB00..00/BCFF	GQuit stack (used by GQuit when booting, or when launching a new app)
00/BD00..00/BDFF	GS/OS direct page (has always been here, but this isn't guaranteed
	to the public).
00/BD48  word	Caller's stack pointer during a GS/OS call.
00/BE00..00/BFFF	GS/OS stack used during a GS/OS call (builds down from BFFF).
00/BE00..00/BEFF	BASIC.System global page.
00/BF00..00/BFFF	ProDOS 8 global page.  GS/OS puts a JMP at $BF00 so that
	certain devices think P8 is available rather than DOS 3.3.
	Global page is detailed in the ProDOS 8 Technical Reference.
00/BF00  jmp	ProDOS 8 call entry
00/C000..01/07FF	NOT managed by the Memory Manager.
00/C000..00/CFFE	Softswitches, peripheral ROM, shared ROM.
00/C000  byte	r:KBD  w:CLR80COL
00/C001  byte	w:SET80COL
00/C002  byte	w:RDMAINRAM
00/C003  byte	w:RDCARDRAM
00/C004  byte	w:WRMAINRAM
00/C005  byte	w:WRCARDRAM
00/C006  byte	w:SETSLOTCXROM
00/C007  byte	w:SETINTCXROM
00/C008  byte	w:SETSTDZP
00/C009  byte	w:SETALTZP
00/C00A  byte	w:SETINTC3ROM
00/C00B  byte	w:SETSLOTC3ROM
00/C00C  byte	w:CLR80VID
00/C00D  byte	w:SET80VID
00/C00E  byte	w:CLRALTCHAR
00/C00F  byte	w:SETALTCHAR
00/C010  byte	r:KBDSTRB
00/C011  byte	r:RDLCBNK2
00/C012  byte	r:RDLCRAM
00/C013  byte	r:RDRAMRD
00/C014  byte	r:RDRAMWRT
00/C015  byte	r:RDCXROM
00/C016  byte	r:RDALTZP
00/C017  byte	r:RDC3ROM
00/C018  byte	r:RD80COL
00/C019  byte	r:RDVBLBAR
00/C01A  byte	r:RDTEXT
00/C01B  byte	r:RDMIX
00/C01C  byte	r:RDPAGE2
00/C01D  byte	r:RDHIRES
00/C01E  byte	r:ALTCHARSET
00/C01F  byte	r:RD80VID
00/C020  byte	reserved [cassette]
00/C021  byte	rw:MONOCOLOR
00/C022  byte	rw:TBCOLOR
00/C023  byte	rw:VGCINT
00/C024  byte	r:MOUSEDATA
00/C025  byte	r:KEYMODREG
00/C026  byte	rw:DATAREG [key micro]
00/C027  byte	rw:KMSTATUS
00/C028  byte	rw:ROMBANK [IIc Plus]
00/C029  byte	rw:NEWVIDEO
00/C02B  byte	rw:LANGSEL
00/C02C  byte	r:CHARROM
00/C02D  byte	rw:SLTROMSEL
00/C02E  byte	r:VERTCNT
00/C02F  byte	r:HORIZCNT
00/C030  byte	rw:SPKR
00/C031  byte	rw:DISKREG
00/C032  byte	w:SCANINT
00/C033  byte	rw:CLOCKDATA
00/C034  byte	rw:CLOCKCTL [+border color]
00/C035  byte	rw:SHADOW
00/C036  byte	rw:CYAREG
00/C037  byte	rw:DMAREG
00/C038  byte	rw:SCCBREG
00/C039  byte	rw:SCCAREG
00/C03A  byte	rw:SCCBDATA
00/C03B  byte	rw:SCCADATA
00/C03C  byte	rw:SOUNDCTL
00/C03D  byte	rw:SOUNDDATA
00/C03E  byte	rw:SOUNDADRL
00/C03F  byte	rw:SOUNDADRH
00/C040  byte	reserved [C040 Strobe]
00/C041  byte	*rw:INTEN
00/C044  byte	*r:MMDELTAX
00/C045  byte	*r:MMDELTAY
00/C046  byte	w:DIAGTYPE r:INTFLAG
00/C047  byte	w:CLRVBLINT
00/C048  byte	w:CLRXYINT
00/C050  byte	rw:TXTCLR
00/C051  byte	rw:TXTSET
00/C052  byte	rw:MIXCLR
00/C053  byte	rw:MIXSET
00/C054  byte	rw:TXTPAGE1
00/C055  byte	rw:TXTPAGE2
00/C056  byte	rw:LORES
00/C057  byte	rw:HIRES
00/C058  byte	rw:SETAN0
00/C059  byte	rw:CLRAN0
00/C05A  byte	rw:SETAN1
00/C05B  byte	rw:CLRAN1
00/C05C  byte	rw:SETAN2
00/C05D  byte	rw:CLRAN2
00/C05E  byte	rw:SETAN3
00/C05F  byte	rw:CLRAN3
00/C060  byte	r:BUTN3
00/C061  byte	r:BUTN0
00/C062  byte	r:BUTN1
00/C063  byte	r:BUTN2
00/C064  byte	r:PADDL0
00/C065  byte	r:PADDL1
00/C066  byte	r:PADDL2
00/C067  byte	r:PADDL3
00/C068  byte	rw:STATEREG
00/C06D  byte	*TESTREG
00/C06E  byte	*CLTRM
00/C06F  byte	*ENTM
00/C070  byte	rw:PTRIG
00/C071..00/C07F	Entry points for interrupt/brk handling (yes, 15 bytes of code live here!)
00/C073  byte	3rd-party memory expansion cards for the Apple IIe use this to choose different
	auxiliary memory banks.
00/C081  byte	rw:ROMIN
00/C083  byte	rw:LCBANK2
00/C08B  byte	rw:LCBANK1
00/C090..00/C0FF	I/O locations for slots 1..7.
	Certain groups apply to the slot even when Your Card is not
	chosen for that slot, since the corresponding GS port uses
	separate locations (for serial chip, mouse).
00/C090..00/C09F	I/O locations for slot 1.
00/C0A0..00/C0AF	I/O locations for slot 2.
00/C0B0..00/C0BF	I/O locations for slot 3.
00/C0C0..00/C0CF	I/O locations for slot 4.
00/C0D0..00/C0DF	I/O locations for slot 5.
00/C0E0..00/C0EF	I/O locations for slot 6.
	All IWM access comes through these, even for SmartPort in slot 5.
00/C0E0  byte	IWM:PH0 off
00/C0E1  byte	IWM:PH0 on
00/C0E2  byte	IWM:PH1 off
00/C0E3  byte	IWM:PH1 on
00/C0E4  byte	IWM:PH2 off
00/C0E5  byte	IWM:PH2 on
00/C0E6  byte	IWM:PH3 off
00/C0E7  byte	IWM:PH3 on
00/C0E8  byte	IWM:motor off
00/C0E9  byte	IWM:motor on
00/C0EA  byte	IWM:drive 1
00/C0EB  byte	IWM:drive 2
00/C0EC  byte	IWM:Q6 OFF (Read)
00/C0ED  byte	IWM:Q6 ON  (WP-sense)
00/C0EE  byte	IWM:Q7 OFF (WP-sense/Read)
00/C0EF  byte	IWM:Q7 ON  (Write)
00/C0F0..00/C0FF	I/O locations for slot 7.
00/C100..00/C1FF	Used for port 1 or slot 1.
00/C1E0  entry	Boot AppleTalk from slot 1
00/C200..00/C2FF	Used for port 2 or slot 2.
00/C2E0  entry	Boot AppleTalk from slot 2
00/C300..00/C3FF	Used for port 3 or slot 3.  When the 80-column firmware in port 3
	is mapped in, the contents are the same as $FF/C300..C3FF.
00/C311  entry	ROM:AUXMOVE
00/C314  entry	ROM:XFER
00/C400..00/C4FF	Used for port 4 or slot 4.
00/C500..00/C5FF	Used for port 5 or slot 5.
00/C600..00/C6FF	Used for port 6 or slot 6.
00/C700..00/C7FF	Used for port 7 or slot 7.
00/C800..00/CFFE	Shared peripheral ROM space.  See 00/07F8, 00/CFFF.
	Each slot can use this, but only one at a time.
	$CFFF tells slots to relinquish this area, and any
	access to $Cnxx tells slot N that it owns this area.
	When the 80-column firmware owns $C800..CFFE, the
	contents are the same as $FF/C800..CFFE.
00/CFFF  byte	rw:CLRROM  Clear all active peripheral C8xx ROMs.
00/D000..00/FFFF	Bank zero language card.  Used by GS/OS.
00/D000..00/DFFF	Two banks exist in this range (plus ROM).
00/D000..00/F7FF	Applesoft BASIC.
00/E000  jmp	Applesoft cold entry
00/E003  jmp	Applesoft warm entry
00/F800..00/FFFF	"F8 ROM" firmware
00/F800  entry	F8ROM:PLOT
00/F80E  entry	F8ROM:PLOT1
00/F819  entry	F8ROM:HLINE
00/F828  entry	F8ROM:VLINE
00/F832  entry	F8ROM:CLRSCR
00/F836  entry	F8ROM:CLRTOP
00/F847  entry	F8ROM:GBASCALC
00/F85F  entry	F8ROM:NXTCOL
00/F864  entry	F8ROM:SETCOL
00/F871  entry	F8ROM:SCRN
00/F88C  entry	F8ROM:INSDS1.2
00/F88E  entry	F8ROM:INSDS2
00/F890  entry	F8ROM:GET816LEN
00/F8D0  entry	F8ROM:INSTDSP
00/F940  entry	F8ROM:PRNTYX
00/F941  entry	F8ROM:PRNTAX
00/F944  entry	F8ROM:PRNTX
00/F948  entry	F8ROM:PRBLNK
00/F94A  entry	F8ROM:PRBL2
00/F953  entry	F8ROM:PCADJ
00/F962  entry	F8ROM:TEXT2COPY
00/FA40  entry	F8ROM:OLDIRQ
00/FA4C  entry	F8ROM:BREAK
00/FA59  entry	F8ROM:OLDBRK
00/FA62  entry	F8ROM:RESET
00/FAA6  entry	F8ROM:PWRUP
00/FABA  entry	F8ROM:SLOOP
00/FAD7  entry	F8ROM:REGDSP
00/FB19  entry	F8ROM:RTBL
00/FB1E  entry	F8ROM:PREAD
00/FB21  entry	F8ROM:PREAD4
00/FB2F  entry	F8ROM:INIT
00/FB39  entry	F8ROM:SETTXT
00/FB40  entry	F8ROM:SETGR
00/FB4B  entry	F8ROM:SETWND
00/FB51  entry	F8ROM:SETWND2
00/FB5B  entry	F8ROM:TABV
00/FB60  entry	F8ROM:APPLEII
00/FB6F  entry	F8ROM:SETPWRC
00/FB78  entry	F8ROM:VIDWAIT
00/FB88  entry	F8ROM:KBDWAIT
00/FBB3  entry	F8ROM:VERSION
00/FBBF  entry	F8ROM:ZIDBYTE2
00/FBC0  entry	F8ROM:ZIDBYTE
00/FBC1  entry	F8ROM:BASCALC
00/FBDD  entry	F8ROM:BELL1
00/FBE2  entry	F8ROM:BELL1.2
00/FBE4  entry	F8ROM:BELL2
00/FBF0  entry	F8ROM:STORADV
00/FBF4  entry	F8ROM:ADVANCE
00/FBFD  entry	F8ROM:VIDOUT
00/FC10  entry	F8ROM:BS
00/FC1A  entry	F8ROM:UP
00/FC22  entry	F8ROM:VTAB
00/FC24  entry	F8ROM:VTABZ
00/FC42  entry	F8ROM:CLREOP
00/FC58  entry	F8ROM:HOME
00/FC62  entry	F8ROM:CR
00/FC66  entry	F8ROM:LF
00/FC70  entry	F8ROM:SCROLL
00/FC9C  entry	F8ROM:CLREOL
00/FC9E  entry	F8ROM:CLREOLZ
00/FCA8  entry	F8ROM:WAIT
00/FCB4  entry	F8ROM:NXTA4
00/FCBA  entry	F8ROM:NXTA1
00/FCC9  entry	F8ROM:HEADR
00/FD0C  entry	F8ROM:RDKEY
00/FD10  entry	F8ROM:FD10
00/FD18  entry	F8ROM:RDKEY1
00/FD1B  entry	F8ROM:KEYIN
00/FD35  entry	F8ROM:RDCHAR
00/FD67  entry	F8ROM:GETLNZ
00/FD6A  entry	F8ROM:GETLN
00/FD6C  entry	F8ROM:GETLN0
00/FD6F  entry	F8ROM:GETLN1
00/FD8B  entry	F8ROM:CROUT1
00/FD8E  entry	F8ROM:CROUT
00/FD92  entry	F8ROM:PRA1
00/FDDA  entry	F8ROM:PRBYTE
00/FDE3  entry	F8ROM:PRHEX
00/FDED  entry	F8ROM:COUT
00/FDF0  entry	F8ROM:COUT1
00/FDF6  entry	F8ROM:COUTZ
00/FE1F  entry	F8ROM:IDROUTINE
00/FE2C  entry	F8ROM:MOVE
00/FE5E  entry	F8ROM:LIST (not on GS)
00/FE80  entry	F8ROM:SETINV
00/FE84  entry	F8ROM:SETNORM
00/FE89  entry	F8ROM:SETKBD
00/FE8B  entry	F8ROM:INPORT
00/FE93  entry	F8ROM:SETVID
00/FE95  entry	F8ROM:OUTPORT
00/FEB6  entry	F8ROM:GO
00/FECD  entry	F8ROM:WRITE
00/FEFD  entry	F8ROM:READ
00/FF2D  entry	F8ROM:PRERR
00/FF3A  entry	F8ROM:BELL
00/FF3F  entry	F8ROM:RESTORE
00/FF4A  entry	F8ROM:SAVE
00/FF58  entry	F8ROM:IORTS
00/FF59  entry	F8ROM:OLDRST
00/FF65  entry	F8ROM:MON
00/FF69  entry	F8ROM:MONZ
00/FF6C  entry	F8ROM:MONZ2
00/FF70  entry	F8ROM:MONZ4
00/FF8A  entry	F8ROM:DIG
00/FFA7  entry	F8ROM:GETNUM
00/FFAD  entry	F8ROM:NXTCHR
00/FFBE  entry	F8ROM:TOSUB
00/FFC7  entry	F8ROM:ZMODE
00/FFFA  word	NMI vector.
00/FFFC  word	Reset vector.
00/FFFE  word	IRQ/BRK vector.
01/0000..01/00FF	Auxiliary zero page.  Certain areas can be used by P8 apps?
01/0100..01/01FF	Auxiliary page-one stack.
01/0100  byte	MNEMSTKPTR (MaiN EMulation stack pointer).  Value for page-one
	stack pointer when we are not actually using the main page-one stack.
01/0101  byte	ALEMSTKPTR (Alternate EMulation stack pointer).  Value for auxiliary
	(bank 1) page-one stack pointer when we are not actually using that
	stack.
01/0200..01/03FF	No known use under GS/OS.
01/0400..01/07FF	Part of 80-column text screen (every other column, starting
	with the first).
01/0478..01/047F	Auxiliary memory screen holes.
01/04F8..01/04FF	Auxiliary memory screen holes.
01/0578..01/057F	Auxiliary memory screen holes.
01/05F8..01/05FF	Auxiliary memory screen holes.
01/0678..01/067F	Auxiliary memory screen holes.
01/06F8..01/06FF	Auxiliary memory screen holes.
01/0778..01/077F	Auxiliary memory screen holes.
01/07F8..01/07FF	Auxiliary memory screen holes.
01/0800..01/0BFF	@@@ 80-column text page two?
01/2000..01/9FFF	Fast-RAM copy of Super Hi-Res screen (can shadow to $E1).
01/2000..01/3FFF	Part of Double Hi-Res page 1.
01/4000..01/5FFF	Part of Double Hi-Res page 2.
01/9D00..01/9DFF	Fast-RAM SCBs for Super Hi-Res.  The hardware supports these,
	but the software convention is that they are NOT USED.
01/9E00..01/9FFF	Fast-RAM color tables.  Harware can shadow these, but the
	software convention is that they are NOT USED.
01/A600..01/BBFF	Used by GS/OS in 6.0 and later for the Loader.
01/BC00..01/BFFF	Reserved under GS/OS for the AppleDisk3.5 driver to use.
01/C000..01/FFFF	NOT managed by the Memory Manager.
01/C000..01/CFFF	Softswitches/etc just like in bank zero.
01/D000..01/FFFF	Bank one language card.  Used by GS/OS.
01/D000..01/DFFF	Two banks exist in this range.
01/FC00..01/FCFF	GS/OS System Service vectors.
01/FC00  jump	SysSrv: DEV_DISPATCHER
01/FC04  jump	SysSrv: CACHE_FIND_BLK
01/FC08  jump	SysSrv: CACHE_ADD_BLK
01/FC0C  jump	SysSrv: %CACHE_INIT
01/FC10  jump	SysSrv: %CACHE_SHUTDN
01/FC14  jump	SysSrv: CACHE_DEL_BLK
01/FC18  jump	SysSrv: %CACHE_DEL_VOL
01/FC1C  jump	SysSrv: ALLOC_SEG
01/FC20  jump	SysSrv: RELEASE_SEG
01/FC24  jump	SysSrv: %ALLOC_VCR
01/FC28  jump	SysSrv: %RELEASE_VCR
01/FC2C  jump	SysSrv: %ALLOC_FCR
01/FC30  jump	SysSrv: %RELEASE_FCR
01/FC34  jump	SysSrv: SWAP_OUT
01/FC38  jump	SysSrv: DEREF
01/FC3C  jump	SysSrv: %GET_SYS_GBUF
01/FC40  jump	SysSrv: %SYS_EXIT
01/FC44  jump	SysSrv: %SYS_DEATH
01/FC48  jump	SysSrv: %FIND_VCR
01/FC4C  jump	SysSrv: %FIND_FCR
01/FC50  jump	SysSrv: SET_SYS_SPEED
01/FC54  jump	SysSrv: %CACHE_FLSH_DEF
01/FC58  jump	SysSrv: %RENAME_VCR
01/FC5C  jump	SysSrv: %RENAME_FCR
01/FC60  jump	SysSrv: %GET_VCR
01/FC64  jump	SysSrv: %GET_FCR
01/FC68  jump	SysSrv: LOCK_MEM
01/FC6C  jump	SysSrv: UNLOCK_MEM
01/FC70  jump	SysSrv: MOVE_INFO
01/FC74  jump	SysSrv: %CVT_0TO1
01/FC78  jump	SysSrv: %CVT_1TO0
01/FC7C  jump	SysSrv: %REPLACE80
01/FC80  jump	SysSrv: %%TO_B0_CORE
01/FC84  jump	SysSrv: %%G_DISPATCH
01/FC88  jump	SysSrv: SIGNAL
01/FC8C  jump	SysSrv: %%GET_SYS_BUFF
01/FC90  jump	SysSrv: SET_DISK_SW
01/FC94  jump	SysSrv: %%REPORT_ERROR
01/FC98  jump	SysSrv: %%MOUNT_MESSAGE
01/FC9C  jump	SysSrv: %%FULL_ERROR
01/FCA0  jump	SysSrv: %RESERVED_07
01/FCA4  jump	SysSrv: SUP_DRVR_DISP
01/FCA8  jump	SysSrv: INSTALL_DRIVER
01/FCAC  jump	SysSrv: %%S_GET_BOOT_PFX
01/FCB0  jump	SysSrv: %%S_SET_BOOT_PFX
01/FCB4  jump	SysSrv: %%LOW_ALLOCATE
01/FCB8  jump	SysSrv: %%GET_STACKED_ID
01/FCBC  jump	SysSrv: DYN_SLOT_ARBITER
01/FCC0  jump	SysSrv: %%PARSE_PATH
01/FCC4  jump	SysSrv: %%OS_EVENT
01/FCC8  jump	SysSrv: %%INSERT_DRIVER
01/FCCC  jump	SysSrv: %%(device manager?)
01/FCD0  jump	SysSrv: %Old Device Dispatcher(?)
01/FCD4  jump	SysSrv: %%INIT_PARSE_PATH
01/FCD8  jump	SysSrv: UNBIND_INT_VEC
01/FCDC  jump	SysSrv: %%DO_INSERT_SCAN
01/FCE0  jump	SysSrv: %%TOOLBOX_MSG
01/FCE4..01/FFFF	Apparently available for GS/OS to grow into!
01/FFFF	Highest fast-RAM address on a 256K machine.
02/0000..7F/FFFF	Managed by the Memory Manager.  Fast RAM.
@@@ net booting uses bank 2 or 3 hard-coded?
@@@ P8 version of Ethernet CDA uses some hard-coded memory?
0F/FFFF	Highest fast-RAM address on a 1.125M machine (stock ROM 3)
11/FFFF	Highest fast-RAM address on a 1.25M machine (ROM 1 + 1 Meg)
1F/FFFF	Highest fast-RAM address on a 2.125M machine (ROM 3 + 1 Meg)
80/0000..DF/FFFF	Not decoded by the GS hardware.
BC/0000..BC/FFFF	Used by TransWarpGS (as ROM).  There's a fake CDA handle into here.
E0/0000..E1/FFFF	Slow RAM (video buffers + misc)

 E0 storage locations for the desk manager
E0/0000..E0/00FF	E0 zero page.  Who knows??
E0/0100..E0/02FF	Beats me!
E0/0300..E0/03FF	CDA menu saves the bank-zero page-one stack here
E0/0400..E0/07FF	40-column text page 1 (the hardware displays this copy, not the bank 0 copy)
E0/0800..E0/0BFF	Text page 2?
E0/0C00..E0/0FFF	CDA menu saves bank $00 40-col screen here (SaveAll/RestAll)
E0/1000..E0/13FF	CDA menu saves bank $01 40-col screen here (SaveAll/RestAll)
E0/1400..E0/17FF	CDA menu saves bank $E0 40-col screen here (SaveAll/RestAll)
E0/1800..E0/1BFF	CDA menu saves bank $E1 40-column screen here
E0/1C00..E0/1CFF	CDA menu stores bank 0 zero page here (SaveAll/RestAll)

E0/1D00	bregsave	equ $E01D00
E0/1D02	intstatus	equ $e01D02	;2
E0/1D03	svstatereg	equ $e01D03	;1
E0/1D04	col80sv	equ $e01D04	;1
E0/1D05	loxclampsv	equ $e01D05	;1
E0/1D07	loyclampsv	equ $e01D07	;2
E0/1D09	hixclampsv	equ $e01D09	;2
E0/1D0B	hiyclampsv	equ $e01D0B	;2
E0/1D0D	outglobals	equ $e01D0D	;2
E0/1D14	want40	equ $e01D14	;6
E0/1D16	cursorsave	equ $e01D16	;2
E0/1D18	newvidsv	equ $e01D18	;2
E0/1D1A	txtsv	equ $e01D1A	;1
E0/1D1B	mixsv	equ $e01D1B	;1
E0/1D1C	page2sv	equ $e01D1C	;1
E0/1D1D	hiressv	equ $e01D1D	;1
E0/1D1E	altcharsv	equ $e01D1E	;1
E0/1D1F	vid80sv	equ $e01D1F	;1
E0/1D20	int1ay	equ $e01D20	;D
E0/1D2D	int1by	equ $e01D2D	;D
E0/1D39	int2ay	equ $e01D39	;13
E0/1D4C	int2by	equ $e01D4C	;13
E0/1D61	mousvblsv	equ $e01D61	;1
E0/1D63	dirpgsv	equ $e01D63	;2
E0/1D65	c3romsv	equ $e01D65	;1
E0/1D66	sv4080	equ $e01D66	;1 
E0/1D67	numints	equ $E01D67	;1
E0/1D68	mmode	equ $e01D68	;2
E0/1D6A	mymslot	equ $e01D6A	;2
E0/1D6C	slot	equ $e01D6C	;2
E0/1D6E	EntryCount	equ $E01D6E	;2
E0/1D70	bottomline	equ $E01D70	;2
E0/1D72	hpos	equ $E01D72	;2
E0/1D74	vpos	equ $E01D74	;2
E0/1D76	CurScreenLoc	equ $E01D76	;4 - current cursor position
E0/1D7A	xxxx2	equ $E01D7A	;2
E0/1D7C	numdas	equ $E01D7C	;2
E0/1D7E	leftborder	equ $E01D7E	;2
E0/1D80	firstmenuitem	equ $E01D80	;2
E0/1D82	idnum	equ $E01D82	;2
E0/1D84	cdatabhndl	equ $E01D84	;4
E0/1D88	roomleft	equ $E01D88	;2
E0/1D8A	keyinput	equ $E01D8A	;2
E0/1D8C	evntrec	equ $E01D8C	;2
E0/1D8E	message	equ $E01D8E	;4
E0/1D92	when	equ $E01D92	;4
E0/1D96	where	equ $E01D96	;4
E0/1D9A	mods	equ $E01D9A	;2
E0/1D9C	stacksv	equ $E01D9C	;2
E0/1D9E	oldoutglob	equ $E01D9E	;4
E0/1DA2	oldoutdev	equ $E01DA2	;6
E0/1DA8	cdatabptr	equ $E01DA8	;4
E0/1DAC	dastrptr	equ $E01DAC	;4
E0/1DB0	curcda	equ $E01DB0	;2
E0/1DB2	oldouthook	equ $E01DB2	;2
E0/1DB4	oldindev	equ $E01DB4	;6
E0/1DBA	oldinglob	equ $E01DBA	;4
E0/1DBE	RealDeskStatus	equ $E01DBE	;2   17-Sep-91 DAL (6.0 and later)
E0/1DC0	next	equ $E01DC0	;(the next free location to assign)

Scheduler
E0/1DDE	SchActive	equ $E01DDE	; new flag for whether we are active
E0/1DDF	taskque	equ $E01DDF	; 16 byte queue -- 4 items
E0/1DDF	firstTask	equ $E01DDF
E0/1DE3	secondTask	equ $E01DE3	; second item in queue
E0/1DED	scheduler	equ $E01DED	; memory used by the scheduler
E0/1DEF	offset	equ $E01DEF
E0/1DFF	lastbyte	equ $E01DFF	; last byte used by the scheduler?

 QuickDraw vectors
E0/1E00..E0/1FFF	QuickDraw II vectors
	(StdXXX and ShieldCursor/UnshieldCursor are public; the rest are
	private and largely mysterious)
E0/1E00  jump	%QD:ToStuff
E0/1E04  jump	QD:StdText
E0/1E08  jump	QD:StdLine
E0/1E0C  jump	QD:StdRect
E0/1E10  jump	QD:StdRRect
E0/1E14  jump	QD:StdOval
E0/1E18  jump	QD:StdArc
E0/1E1C  jump	QD:StdPoly
E0/1E20  jump	QD:StdRgn
E0/1E24  jump	QD:StdPixels
E0/1E28  jump	QD:StdComment
E0/1E2C  jump	QD:StdTxMeas
E0/1E30  jump	QD:StdTxBnds
E0/1E34  jump	QD:StdGetPic
E0/1E38  jump	QD:StdPutPic
E0/1E3C  jump	%QD:PortLoc2ZP
E0/1E40  jump	%QD:UserPat2ZP
E0/1E44  jump	%QD:GetPenPReady
E0/1E48  jump	%QD:GetBackPReady
E0/1E4C  jump	%QD:Pen2ZP
E0/1E50  jump	%QD:Back2ZP
E0/1E54  jump	%QD:RotatePat
E0/1E58  jump	%QD:GetMaskReady
E0/1E5C  jump	%QD:Mask2ZP
E0/1E60  jump	%QD:ExpandMask
E0/1E64  jump	%QD:RotateMask
E0/1E68  jump	%QD:RotateLong
E0/1E6C  jump	%QD:PreDraw
E0/1E70  jump	%QD:XSetup
E0/1E74  jump	%QD:DrawRectB
E0/1E78  jump	%QD:DrawRect
E0/1E7C  jump	%QD:SliceSetup
E0/1E80  jump	%QD:vShiftStay*
E0/1E84  jump	%QD:vXShiftStay*
E0/1E88  jump	%QD:vShiftOut
E0/1E8C  jump	%QD:vXShiftOut
E0/1E90  jump	%QD:BMakeMinRect
E0/1E94  jump	%QD:MakeMinRect
E0/1E98  jump	QD:ShieldCursor
E0/1E9C  jump	QD:UnShieldCursor
E0/1EA0  jump	%QD:SetUpPortRegions
E0/1EA4  jump	%QD:SetUpScanPtrs
E0/1EA8  jump	%QD:FreePortRegions
E0/1EAC  jump	%QD:Free1Region
E0/1EB0  jump	%QD:Free2Regions
E0/1EB4  jump	%QD:Free3Regions
E0/1EB8  jump	%QD:GetFGS		
E0/1EBC  jump	%QD:Init1Region
E0/1EC0  jump	%QD:Init2Regions
E0/1EC4  jump	%QD:Init3Regions
E0/1EC8  jump	%QD:Seek1Region
E0/1ECC  jump	%QD:Seek2Regions
E0/1ED0  jump	%QD:Seek3Regions
E0/1ED4  jump	%QD:InitRgn
E0/1ED8  jump	%QD:SeekRgn
E0/1EDC  jump	%QD:Join1Buffer
E0/1EE0  jump	%QD:Join2Buffers
E0/1EE4  jump	%QD:Join3Buffers
E0/1EE8  jump	%QD:SetSlabAdr
E0/1EEC  jump	%QD:SetSliceAdr
E0/1EF0  jump	%QD:SetStuffAdr
E0/1EF4  jump	%QD:BlowItUpLO
E0/1EF8  jump	%QD:PutPictStuff
E0/1EFC  jump	%QD:AddToPoly
E0/1F00  jump	%QD:OpenPicture
E0/1F04  jump	%QD:PicComment
E0/1F08  jump	%QD:ClosePicture
E0/1F0C  jump	%QD:DrawPicture
E0/1F10  jump	%QD:KillPicture
E0/1F14  jump	%QD:GimmeVersion
E0/1F18  jump	%QD:v_FrRgn
E0/1F1C  jump	%QD:v_PRgn
E0/1F20  jump	%QD:v_ERgn
E0/1F24  jump	%QD:v_IRgn
E0/1F28  jump	%QD:v_FRgn
E0/1F2C  jump	%QD:v_FrRect
E0/1F30  jump	%QD:v_PRect
E0/1F34  jump	%QD:v_ERect
E0/1F38  jump	%QD:v_IRect
E0/1F3C  jump	%QD:v_FRect
E0/1F40  jump	%QD:DChar
E0/1F44  jump	%QD:DText/DCString
E0/1F48  jump	%QD:BChar
E0/1F4C  jump	%QD:BText/BCString
E0/1F50  jump	%QD:ValidChar
E0/1F54  jump	%QD:GetNextChar
E0/1F58  jump	%QD:CalcDrawStatus
E0/1F5C  jump	%QD:TextAndMinRect
E0/1F60  jump	%QD:CalcTextBounds
E0/1F64  jump	%QD:SetUpFontInfo
E0/1F68  jump	%QD:SetUpBufInfo
E0/1F6C  jump	%QD:GetTextHandle
E0/1F70  jump	%QD:ClearBufPart
E0/1F74  jump	%QD:PutChar
E0/1F78  jump	%QD:BumpPen
E0/1F7C  jump	%QD:CleanUpBuffer
E0/1F80  jump	%QD:PutLine
E0/1F84  jump	%QD:PutRgn
E0/1F88  jump	%QD:PutRect
E0/1F8C  jump	%QD:CullPoints
E0/1F90  jump	%QD:SortPoints
E0/1F94  jump	%QD:PackRgn
E0/1F98  jump	%QD:RgnOp
E0/1F9C  jump	%QD:PutOval
E0/1FA0  jump	%QD:BumpOval
E0/1FA4  jump	%QD:InitOval
E0/1FA8  jump	%QD:SetTB
E0/1FAC  jump	%QD:ResetTB
E0/1FB0  jump	%QD:StyleText
E0/1FB4  jump	%QD:StyleExtents
E0/1FB8  jump	%QD:DoBold
E0/1FBC  jump	%QD:DoUnderLine
E0/1FC0  jump	%QD:StdConic
E0/1FC4  jump	%QD:DrawConic
E0/1FC8  jump	%QD:SetScaleAndMap
E0/1FCC  jump	%QD:DrawCursor
E0/1FD0  jump	%QD:UndrawCursor
E0/1FD4  jump	%QD:vAngleFromSlope
E0/1FD8  jump	%QD:vSlopeFromAngle
E0/1FDC  jump	%QD:RgnBlt
E0/1FE0  jump	%QD:SharedMRSetup
E0/1FE4  jump	%QD:ShareShieldStuff
E0/1FE8  jump	%QD:GetCharVals
E0/1FEC  jump	%QD:DoFntFlgMods
E0/1FF0  jump	%QD:AddExtras
E0/1FF4  jump	%QD:CalcSlop
E0/1FF8  jump	%QD:GetFntInf
E0/1FFC  long	OldScanInt (QD:Cursor.asm).  QD keeps the old scanline interrupt value here
	while QD is active.  QDShutDown restores it.
E0/2000..E0/3FFF	Hi-Res page 1 display buffer.
E0/4000..E0/5FFF	Hi-Res page 2 display buffer.
E0/C000..E0/CFFF	Softswitches, etc (like bank zero).
E0/D000..E0/FFFF	Like bank zero (language card RAM is separate).

 Bank E1
E1/0000..E1/2000	Vectors and various other stuff, owned by system.
E1/0000..	Vectors accessible through GetVector/SetVector
	(The vector reference number times 4 is an offset into bank $E1)
E1/0000  jump	System Tool dispatcher
E1/0004  jump	System Tool dispatcher, glue entry
E1/0008  jump	User Tool dispatcher
E1/000C  jump	User Tool dispatcher, glue entry
E1/0010  jump	Interrupt mgr
E1/0014  jump	COP mgr
E1/0018  jump	Abort mgr
E1/001C  jump	System Death mgr
E1/0020  jump	AppleTalk interrupt
E1/0024  jump	Serial interrupt
E1/0028  jump	Scanline interrupt
E1/002C  jump	Sound interrupt
E1/0030  jump	VertBlank interrupt
E1/0034  jump	Mouse interrupt
E1/0038  jump	1/4 sec interrupt
E1/003C  jump	Keyboard interrupt
E1/0040  jump	ADB Response byte int
E1/0044  jump	ADB SRQ int
E1/0048  jump	Desk Acc mgr
E1/004C  jump	FlushBuffer handler
E1/0050  jump	KbdMicro interrupt
E1/0054  jump	1 sec interrupt
E1/0058  jump	External VGC int
E1/005C  jump	other interrupt
E1/0060  jump	Cursor update
E1/0064  jump	IncBusy
E1/0068  jump	DecBusy
E1/006C  jump	Bell vector
E1/0070  jump	Break vector
E1/0074  jump	Trace vector
E1/0078  jump	Step vector
E1/007C  jump	[install ROMdisk]
E1/0080  jump	ToWriteBram
E1/0084  jump	ToReadBram
E1/0088  jump	ToWriteTime
E1/008C  jump	ToReadTime
E1/0090  jump	ToCtrlPanel
E1/0094  jump	ToBramSetup
E1/0098  jump	ToPrintMsg8
E1/009C  jump	ToPrintMsg16
E1/00A0  jump	Native Ctrl-Y
E1/00A4  jump	ToAltDispCDA (ToPg2Kludge)
E1/00A8  jump	GS/OS call [inline parms = word, long]
E1/00AC  jump	OS vector (os_switch, called before application launch)
E1/00B0  jump	GS/OS(@parms,call) [stack parms]
E1/00B4  jump	OS_P8_Switch (A = @@@)
E1/00B8  word	OS_Public_Flags
	  bit 15 = No Inits/DAs (user Shift-booted)
	  bits 14..2 = reserved
	  bit  1 = GSBug is Installed (GSBug 1.7 and later)
	  bit  0 = GSBug is Active (GSBug 1.7 and later)
E1/00BC  byte	OS_KIND (byte: 0=P8, 1=GS/OS) currently-running OS, $FF=in transition
E1/00BD  byte	OS_BOOT (byte: 0=P8, 1=GS/OS)
E1/00BE  word	OS_BUSY (bit 15=busy, other bits have some strange uses; see
	the "Kidding" subproject of GSToolbox)
E1/00C0  ptr	MsgPtr (for internationalizing the text CDA menu, control panel,
	and monitor)

E1/00C3	IRQ_INTFLAG	EQU MSGPOINTER+3	; DS 1,0 ;Status of	INTFLAG at interrupt time
E1/00C4	IRQ_DATAREG	EQU IRQ_INTFLAG+1	; DS 1,0 ;Status of	DATAREG at interrupt time
E1/00C5	IRQ_KMSTATUS	EQU IRQ_DATAREG+1	; DS 1,0 ;Status of	KMSTATUS at interrupt time
E1/00C6	IRQ_SECFLAG	EQU IRQ_KMSTATUS+1	; DS 1,0 ;0/<>0 = int not processed/processed
E1/00C7	IRQ_SER1	EQU IRQ_SECFLAG+1	; DS 1,0 ;Interrupt	info for users
E1/00C8	IRQ_SER2	EQU IRQ_SER1+1	; DS 1,0 ;Interrupt	info for users
E1/00C9	IRQ_APTLKHI	EQU IRQ_SER2+1	; DS 1,0 ;Interrupt	info for users
E1/00CA	IRQ_VOLUME	EQU IRQ_APTLKHI+1	; DS 1,0 ;Volume used during interrupt time
E1/00CB  byte	IRQ_ACTIVE nonzero if called during IRQ
	  The firmware interrupt handler increments this on the way into an interrupt
	  and decrements it on the way out.  The Memory Manager never compacts memory
	  (either in the CompactMem call or in doing a NewHandle or SetHandleSize or
	  whatever) if this byte is nonzero. -- So generally interrupt routines can
	  call the Memory Manager safely, provided that the BUSY flag is zero, without
	  confusing foreground tasks that are using their handles without locking them.
E1/00CC	IRQ_SOUNDD	EQU IRQ_ACTIVE+1	; ds 1,0 ; sound register during IRQ
E1/00CC  ???	osc_no_irq	Sound oscillator generating irq

E1/00CF	SIOFLAG	EQU $E100CF	; DS 1,0 ;Slts enabled via init call to	Misc Tl Loc
E1/00D0	INMASK	EQU SIOFLAG+1	; DS 3,0 ;AND mask / OR mask / slot #
E1/00D0	InSlot	equ InMask
E1/00D1	InOr	equ InSlot+1
E1/00D2	InAnd	equ InOr+1
E1/00D3	OUTMASK	EQU INand+1	; DS 3,0 ;AND mask / OR mask / slot #
E1/00D3	OutSlot	equ OutMask
E1/00D4	OutOr	equ OutSlot+1
E1/00D5	OutAnd	equ OutOr+1
E1/00D6	ENSONIQFLG	EQU OUTMASK+3	; DS 1,0 ;0=chip installed / 1=no chip installed
E1/00D7	IRQ_MOUSVBL	EQU ENSONIQFLG+1	; DS 1,0 ;0 if mouse not using VBL

E1/00D8  long	HBPTR	EQU IRQ_MOUSVBL+1	; DS 4,0 ;Heart beat pointer to 1st item in list
E1/00DC  long	TICKCNT	EQU HBPTR+4	; DS 4,0 ;Tick count updated by heart beat
E1/00E0  byte	MOUSESLOT	EQU TICKCNT+4	; DS 1,0 ;Mouse slot in use
E1/00E1	EVMGRDATA	EQU MOUSESLOT+1	; DS 30,$00 ;Event manager permanent information
E1/00E1  word	JournalFlag	equ EVMGRDATA	; <0-play back, 0-no journal, >0-record
E1/00E3  long	JournalPtr	equ JournalFlag+2	; address of journaling driver
E1/00E7	EMBStat	equ JournalPtr+4	; mouse button status
E1/00E9	EMXPos	equ EMBStat+2	; X position
E1/00EB	EMYPos	equ EMXPos+2	; Y position
E1/00ED..00F8	TaskHead (RAM part of mouse card heartbeat task--12 bytes)
E1/00F9..00FE	Unused???
E1/00FF  byte+	BusyFlag
E1/0100  byte	This isn't really part of the BUSY flag, but people overflow their 16-bit STZ BUSYFLAGs into this location.
E1/0101  byte	SCCSTAT	EQU BusyFlag+2	; DS 1,0 ;=0 then not SCC int- <>0 then	SCC int
E1/0102  byte	SCCFLAG	EQU SCCSTAT+1	; DS 1,0 ;0=no ApTalk-$3C=chanA-$3B=chanB=ApTalk
E1/0103  byte	SCCFLAG2	EQU SCCFLAG+1	; DS 1,0 ;Aptalk int mask -$07=chanB-$38=chanA
E1/0104  byte	SERFLAG	EQU SCCFLAG2+1	; DS 1,0 ;Ser int msk-$07=chanB-$38=chanA-$3F=both
E1/0105  byte	SCC1	EQU SERFLAG+1	; DS 1,0 ;1st data byte read in by int handler
E1/0106  byte	SCC2	EQU SCC1+1	; DS 1,0 ;2nd data byte read in by int handler
E1/0107  byte	SCC3	EQU SCC2+1	; DS 1,0 ;3rd data byte read in by int handler
 Interrupt uses all variables with 'irq_'
E1/0108	irq_A	EQU SCC3+1	; DS 2
E1/010A	irq_X	EQU IRQ_A+2	; DS 2
E1/010C	irq_Y	equ irq_X+2	; DS 2
E1/010E	irq_S	equ irq_Y+2	; DS 2
E1/0110	irq_D	equ irq_S+2	; DS 2
E1/0112	irq_P	equ irq_D+2	; DS 1
E1/0113	irq_DB	equ irq_p+1	; DS 1 ;irq_DB and irq_e canNOT be separated
E1/0114	irq_e	equ irq_DB+1	; DS 1
E1/0115	irq_K	equ irq_e+1	; DS 1
E1/0116	irq_PC	equ irq_K+1	; DS 2
E1/0118	irq_state	equ irq_PC+2	; DS 1
E1/0119	irq_shadow	equ irq_state+1	; DS 2
E1/011B	irq_mslot	equ irq_shadow+2	; DS 1

E1/0120	AVAL equ $E10120	; DW 0 ;A register value
	*        ; DW 0 ;X register value
	*        ; DW 0 ;Y register value
E1/0126	SVAL	equ AVAL+6	; DW 0 ;S (stack pointer) value
E1/0128	DVAL	equ SVAL+2	; DW 0 ;D (direct (zero page) register)	value
E1/012A	PVAL	equ DVal+2	; DFB 0 ;P (processor status) value
E1/012B	BVAL	equ PVal+1	; DFB 0 ;B (data bank register) value
E1/012C	KVAL	equ BVal+1	; DFB 0 ;K (program	bank register) value
E1/012D	MVAL	equ KVal+1	; DFB 0 ;M (memory status) value
E1/012E	QVAL	equ MVal+1	; DFB 0 ;Q (bit7=speed - bits6-0 match shadow reg)
E1/012F	LVAL	equ QVal+1	; DFB 0 ;L (language card bank 0/1 selected) value
E1/0130	MPVAL	equ LVal+1	; DFB 0 ;m memory access mode bit value
E1/0131	XPVAL	equ MPVal+1	; DFB 0 ;x index mode bit value
E1/0132	EPVAL	equ XPVal+1	; DFB 0 ;e (emulation mode status) value
E1/0133	DDVAL	equ EPval+1	; DFB 0 ;d (disassembly option) value
E1/0134	ASCFILTER	equ DDVAL+1	; DFB 0 ;F (filter mask for ASCII input in mon)
E1/0135	CURSOR	equ ASCFilter+1	; DFB 0 ;Cursor (Current cursor character, ROM 3 only)
E1/0136	NXTCUR	equ Cursor+1	; DFB 0 ;Cursor
E1/0137	CHGCURFLG	equ NxtCur+1	; DFB 0 ;<>0=change	cursor/ 0=no change	cursor

E1/0138	SYSTEMSPD	equ ChgCurFlg+1	; DFB 0 ;$00=slow speed -- $80=high speed mask
E1/0139	SLOTSFG	equ SYSTEMSPD+1	; DFB 0 ;SLTROMSEL value for reset
E1/0139	E1PCLH	equ SYSTEMSPD+1	; DW 0 ;Program counter for 'G'o routine
E1/013B	GOS	equ E1PCLH+2	; DW 0 ;'S' value to return to after a 'G'o cmd
E1/013D	BANKS	equ GOS+2	; DFB 0 ;Source bank
E1/013E	BANKD	equ BANKS+1	; DFB 0 ;Destination bank
E1/013F	EXTENDBNK	equ BANKD+1	; DW 0 ;Extend+bank bytes that user entered
E1/0141	DIGITCNT	equ EXTENDBNK+2	; DFB 0 ;Used by GETNUM - how many digits entered
E1/0142	C1FLAG	equ DIGITCNT+1	; Serial code uses as indicator
E1/0143	C2FLAG	equ C1FLAG+1	; serial code uses as indicator
		(Indexed from $E10143-$C1, "system-clobbered default flag")
E1/0144	CURSHIFTER 	equ C2FLAG+1	; Shifts to 0 which causes cursor to flash
E1/0145	EXTENDBNKS	equ CURSHIFTER+1	; Saved extend+bank bytes entered
E1/0147	IRQ_3031SOUND	equ EXTENDBNKS+2	; Jmp vector to Apple sound irqs
E1/0148	asnd_vect	Apple-reserved oscillators irq vectors (Sound:Snd.Equ.aii)
E1/014C	KEYTASKHDR0	equ $E1014C	; Key press task handler buffer, 12 BYTES
E1/0158	EVMKEYBUFF	equ KEYTASKHDR0+12	; 16 bytes required
E1/0158	WHATEVENT 	equ EVMKEYBUFF	; 1st byte is event number
E1/015A	EVMKEY	equ EVMKEYBUFF+2	; ASCII key pressed is here

E1/0168	RDMEMDATA	equ EVMKEYBUFF+16	; Powerup byte read from keyboard micro
E1/0169	TOGGLEPAT 	equ RDMEMDATA+1 	; Speaker ptggle ptrn for NEWBELL1 sounds
E1/016B	DURATION 	equ TOGGLEPAT+2	; Hold time counter for NEWBELL1
E1/016D	PITCH	equ DURATION+2 	; User chosen pitch value for NEWBELL1
E1/016F	VOLUME	equ PITCH+2	; Volume counter for NEWBELL1
E1/0170	TP2THDR	equ VOLUME+1 	; Task header for text page 2 copier
E1/0174	TP2TCNT	equ TP2THDR+4	; VBL count
E1/0176	TP2TSIG	equ TP2TCNT+2	; Signature byte
E1/0178	TP2TJMP	equ TP2TSIG+2	; Jmp vector
E1/017C	TP2MODE	equ TP2TJMP+4	; 0/1 text page 2 copier off/on
E1/017D  byte	ROMDAACT	 0 = Do not activate, <> = activate
	Bits 7 and 6 are used as flags.  ROM 3 accidentally assumes that bit 7
	powers up as 0!  If it comes up as 1, the user gets Visit Monitor and
	Memory Peeker whether they want them or not (regardless of BRAM location
	$59, that is).
E1/017E  word	NOTESEQ	equ ROMDAACT+1	; 2 bytes for note sequencer usage
E1/0180  jump	ToBusyStrip
E1/0184  jump	ToStrip
E1/0188  long	DefaultTPTPtr	equ $E10188	; for SetDefaultTPT (moved equate 25-Sep-90 DAL)
E1/018C	STEPSP	equ $E1018C	;Step/Trace return address after each instruction
E1/018D	JSX	equ STEPSP+1	;Flag for real time execution
E1/018E	KEYUCVER	equ JSX+1 	;KeyUc version#
E1/018F	ORGMEMORY	equ KEYUCVER+1 	;Used in executed BRK/COP disassembly

 New (ROM 3?) locations for mouse to be used
E1/0190	lowabsx	equ ORGMEMORY+1     ;Mouse x/y absolute position
E1/0191	lowabsy	equ lowabsx+1	;
E1/0192	highabsx	equ lowabsy+1	;
E1/0193	highabsy	equ highabsx+1	;
E1/0194	MseInfo	equ highabsy+1	;Bits 6, 7 for Y clamps
E1/0195	MseSpare	equ MseInfo+1	;For mouse routine usage
E1/0196	msestat	equ MseSpare+1	;Button 0/1 interrupt status byte
E1/0197	msemode	equ msestat+1	;Mode byte
E1/0198  jump	%%FirmwarePatcher
E1/0198	MDISPATCH	equ msemode+1 	;DS 4,0 for Jmp vector to monitor dispatch
E1/019C	MAINSIDEPATCH	equ MDISPATCH+4	;DS 4,0 for Jmp vector to main side dispatch
E1/01A0	GUS	equ MAINSIDEPATCH+4 ;DS 4,0 for gs/os scsi manager usage
E1/01A4	ROMDEBUGGER	equ GUS+4 	;ROM debugger uses for storing data bank
E1/01A5  byte	IsPanelActive/GSC	Bit7=1, GSc; Bit6=1, don't install text Control Panel
E1/01A6 	CLRHOLES		EQUDS.B	1	;0=CLEAR, <>0 NOT CLEAR
E1/01A7 	HIGHBANK		EQUDS.B	1	;Used to handle bank crossing
E1/01A8 	FLIPSCRN		EQUDS.B	1	;Bit7, flip between txtpage1 and 'brk scrn
E1/01A9 	DEFAULTSLT	EQUDS.L	1	;Jmp vctr to restor default slt assignment
E1/01AD 	RESTORSLT		EQUDS.L	1	;Jmp vctr to restor system slot assignment
E1/01B1 	CYAVER		EQUDS.B	1	;$00 = FPI, $40 = CYA
E1/01B2  jump	MidiInputPoll
E1/01BA	JSX		EQUDS.B	1	;Bit7:real time of jsx, bit6: regs display
E1/01BB	SCRNSTAT		EQUDS.B	1	;Store the display before brk, used in 'r'
E1/01B6..E1/01BF	Not used???
E1/01BC  jump	%%LLToolboxVector for ROM 3 (Low Level toolbox vector)
	See GSToolbox:Patch:Patch3:ControlMgr.pch.
	This vector is the one and only place to cleanly patch dispatches
	to many of the ROM-based control defprocs (the ones that don't have
	a tool call to get the address).
	The Window Manager also calls this when windows get activated and
	deactivated (but I don't know what that's especially useful for).
E1/01C0  byte	atport	equ $E101C0 (0=net not using serial chip, 1=printer port, 2=modem port)
E1/01C1  byte	atslot	equ $E101C1
E1/01C2  byte	pmslot	equ $E101C2
E1/01C3 	USEROPC		EQUDS.B	1	;User opcode
E1/01C4 	USEROPRL		EQUDS.B	1	;User low operand
E1/01C5 	USEROPRH		EQUDS.B	1	;User high operand
E1/01C6 	USEROPRK		EQUDS.B	1	;User program bank
E1/01C7 	JMPNOBRA		EQUDS.B	1	;JML, $5c, to jmp to handle user nobranch opcode
E1/01C8 	NOBRAPCL		EQUDS.B	1	;Nobranch address, pcl
E1/01C9 	NOBRAPCH		EQUDS.B	1	;Nobranch address, pch
E1/01CA 	NOBRAPCK		EQUDS.B	1	;Nobranch address, pck
E1/01CB 	JMPBRACH		EQUDS.B	1	;JML, $5c, to jmp to handle user branch opcode
E1/01CC 	BRACHPCL		EQUDS.B	1	;Branch address, pcl
E1/01CD 	BRACHPCH		EQUDS.B	1	;Branch address, pch
E1/01CE 	BRACHPCK		EQUDS.B	1	;Branch address, pck
E1/01CF 	KPMNEMSP		EQUDS.B	1	;{MSA 4/28/89} Stores Emul SP in Step/Trace Code
E1/01D0  word	warm_cold_flag (0 = cold GS/OS startup/shutdown, 1=warm)

E1/0200  jump	Memory Mover
E1/0204  jump	Set System Speed
E1/0208  jump	Slot Arbiter
E1/020C  jump	SERBASIC		EQUDS.L 1	;Jump vector for serial BASIC (Address of serial code BASIC patch)
E1/0210  jump	SERPASCAL		EQUDS.L 1	;Jump vector for serial PASCAL (Address of serial code Pascal patch)
E1/0214  jump	SEREXTERL		EQUDS.L 1	;Jump vector for serial external patch (Address of serial code EXTERNAL patch)
E1/0218  jump	INDINTVCTR		EQUDS.L 1	;Hardware independent interrupt vctr ("not done"?)
E1/021C  jump	IRQ_MIDI  Special vector for Midi Interrupt polling
E1/0220  jump	HyperCard IIgs callback
E1/0224  word	Reserved for cramming an RTL here, in case somebody like Greg Templeman needs to.

E1/02B8	FILL2CLAMPS	equ $E102B8
E1/02B8  word	LOWXCLAMP	equ FILL2CLAMPS	; Low X clamp
E1/02BA  word	LOWYCLAMP	equ LOWXCLAMP+2	; Low Y clamp
E1/02BC  word	HIXCLAMP 	equ LOWYCLAMP+2	; High X clamp
E1/02BE  word	HIYCLAMP	equ HIXCLAMP+2	; High Y clamp

E1/02C0..E1/03BF	Image of Battery RAM.
	On ROM 1, the mapping is address = $E1/02C0 + parm_number.
	On ROM 3, it is much weirder (see GSToolbox:Misc.Tools).
E1/02F6  byte	MinDiskParm	equ $E102F6	;Minimum disk parm in battery ram
E1/02F7  byte	MaxDiskParm	equ $E102F7	;Maximum disk parm $0-$10
E1/03C0  long	TPTPtr	equ $E103C0	; Ram based TPT Pointer
E1/03C4  long	U_TPTPtr	equ TPTPtr+4	; Ram based User TPT Pointer
E1/03C8  long	WAPTPtr	equ U_TPTPtr+4	; Pointer to Work Area Pointer Table
E1/03CC  long	U_WAPTPtr	equ WAPTPtr+4	; Pointer to users ...

E1/03D0	SCALEDATA	EQU $E103D0 (ADB)
E1/03D0  word	YMULTIPLY	EQU SCALEDATA	;AREA IN BANK $E1 (ADB)
E1/03D2  word	XMULTIPLY	EQU YMULTIPLY+2 (ADB)
E1/03D4  word	YOFFSET	EQU XMULTIPLY+2 (ADB)
E1/03D6  word	XOFFSET	EQU YOFFSET+2 (ADB)
E1/03D8  word	YDIVIDE	EQU XOFFSET+2 (ADB)
E1/03DA  word	XDIVIDE	EQU YDIVIDE+2 (ADB)
E1/03DC  long	VCTRCPLT	EQU $E103DC	;COMPLETION VECTOR ADDRESS, 4 BYTES (ADB)

E1/03D0..E1/03DF	ADBSCALE 	equ $E103D0	; 16 bytes absolute device scale data area

E1/03E0  byte	TIMEOUT	equ $E103E0	; DFB 0 ;Timeout counter
E1/03E1  long	CLKRDATA	equ TimeOut+1	; DS 4,0 ;Time read	from clock in seconds
E1/03E5  long	CLKWDATA	equ ClkRData+4	; DS 4,0 ;Time to write to clock in seconds
E1/03E9..E1/03FF	ASCIITIME	equ ClkWData+4	; DS 23,0 ;Time in ASCII 'mm/dd/yy hh:mm:ss am/pm'

E1/0400..E1/07FF	text page 1 (hardware displays from here)
E1/0800..E1/0BFF	text page 2 (hardware displays from here)

E1/0F6D	SmartPort vector table (HOOKS)
E1/0F6D  word	Length (of hook table?)
E1/0F6F  8 bytes	RDADDRHOOK
E1/0F77  8 bytes	READDATAHOOK
E1/0F7F  8 bytes	WRITEDATAHOOK
E1/0F87  8 bytes	SEEKHOOK
E1/0F8F  8 bytes	FORMATHOOK
E1/0F97  8 bytes	WRITETRKHOOK
E1/0F9F  8 bytes	VERIFYHOOK
E1/0FA7  8 bytes	VECTORHOOK
E1/0FAF	HOOKS_END
E1/0FB0..E1/0FC8	SMARTPORTTEMP ; 25 bytes, SmartPort uses to replace screenholes
	*GSFirmware:SmartPort:equates.aii:
	*            //e       //c      //gs       Rev D
	*  -----------------------------------------------------
	*  ProFlag  $478+n    $478     $E10FB0
	*  Retry    $4F8+n    $4F8     $E10FB1
	*  SHTemp1  $578+n    $578     $E10FB2
	*  Retry2   $578+n    $578     $E10FB3
	*  SHTempX  $5F8+n    $5F8     $E10FB4
	*  SHTempY  $678+n    $678     $E10FB5
	*  Power1   $6F8+n    ----     $E10FB6
	*  Power2   $778+n    ----     $E10FB7
	*  NumDevices $7F8+n  $6FE     $E10FB8
	*  SvBcL    $6F8      $6F8     $E10FB9
	*  SvBcH    $778      $778     $E10FBA
	*  MSlot    $7F8      $7F8     $0007F8
	*  RamUnit  ----      ----     $E10FBC
	*  RomUnit  ----      ----     $E10FBD
	*  DumbUnit ----      ----     $E10FBE
	*  SmartUnit ---      ----     $E10FBF
	*  ReMap    ----      ----     $E10FC0
	*                     thru     $E10FC3
	*                                          $E10FC4
	*  remap expansion space                   $E10FC5 
	*  SavRomSel   ----    ----    $E10FC4     $E10FC6
	*  IntEnbl     ----    ----    $E10FC5     $E10FC7
	*  BramFlag    ----    ----    $E10FC6     $E10FC8
	*  CmdRetry    ----    ----    $E10FC7     $E10FC9
	*  CyaSave     ----    ----    $E10FC8     $E10FCA
	*  AccessFlg   ----    ----     ------     $E10FCB.CC
	*  spares      ----    ----    $E10FC9..F  $E10FCD..F

E1/0FD0  long	MTHANDLE - STORAGE FOR ID TAG HANDLE (Misc Tools)
E1/0FD4  word??	KBDIRQFLAG ; KEYBOARD INTERRUPT FLAG

 ADB buffer and variables
E1/0FD6	PENDFLAG ;3rd DATA BUFFER, BANK $E1 (ADB) also called RSPNSFLAG, FLAGS
E1/0FD6	FILL2ADBVAR
E1/0FD6  byte	ADBFLAGS ;ADB variables
E1/0FD7  byte	STATUSTMP ;Holds any pending Uc status
E1/0FD8  byte	SRQNUM ;# of devices installed in SRQ chain
E1/0FD9  byte	SRQCNT ;Count of devices polled since last data
E1/0FDA  byte	SRQPTR ;Pointer of next device in SRQ list
E1/0FDB  byte	SRQMRU ;Most recently used device (top of list)

E1/0FFC  word	Serial:SPEEDSTORE ;Used to keep speed at entry (1 ea port)
E1/0FFE  word	Serial:FIRSTTIME  ;Indexed with $C1

E1/0FFE  byte	SERPWRUP  ;serial port power up byte (low)
E1/0FFF  byte	SERPWRUP2 ;serial port power up byte (high)

AppleTalk: lap_equates stuff
E1/1000	Extended/ASEXT (GSFirmware:Serial:equates.aii)
E1/1004  jump	ATLK: BASIC entry (ASBAS)
E1/1008  jump	ATLK: Pascal entry (ASPAS)
E1/100C  jump	ATLK: RamGoComp (completion vector)
E1/1010  jump	ATLK: SoftReset chain
E1/1014  jump	ATLK: RamDispatch (RAMDISPATCH) command dispatcher
E1/1018  jump	ATLK: RamForbid (RAMFORBID)
E1/101C  jump	ATLK: RamPermit (RAMPERMIT)
E1/1020  jump	ATLK: ProEntry (PROENTRY)
E1/1022  jump	ATLK: ProDOS (PRODOS) entry
E1/1026  jump	ATLK: SerStatus (ATSTAT) serial interface status hook
E1/102A  jump	ATLK: SerWrite (ATOUT) serial interface write hook
E1/102E  jump	ATLK: SerRead (ATIN) serial interface read hook
E1/1032  jump	SerBackgnd, for background printing  ;ATBRP (GSFirmware:Serial:equates.aii)
E1/1036  jump	PDispatch, for dispatching packets
E1/103A  jump	init file hook
E1/103E  jump	ATLK: PFI Vector
E1/1042  jump	Cnxx  ;emulation mode entry
E1/1046  jump	CnxxGo ;native mode entry
E1/104A  jump	OnExitVector ;Exit vector for QTRIRQ
E1/104E	colHist	;These first  variables need to be set
E1/104F	defHist	;to zero at initialization, so put them
E1/1050	gBackOff	;together.
E1/1051	needData
E1/1052	addrValid
E1/1053	busyFlag
E1/1054	pktError
E1/1055	deltaT
E1/1056	trailing
E1/1057	curPos
E1/1059	catchProt
E1/105D	protTable ;This table must be filled with $ff's.
E1/108D	whichMouse
E1/108F	seed
E1/1091 	addrUsed
E1/1092	gotCTS
E1/1093	gotData
E1/1094	dest
E1/1095	source
E1/1096	lapType
E1/1097	lBackOff
E1/1098	colTries
E1/1099	defTries
E1/109A	errRec
E1/109C	txBDS
E1/10A0	whichSCC
E1/10A2	ckSum
E1/10A4	freeProt
E1/10A6	scc1A
E1/10A7	scc2A
E1/10A8	scc3
E1/10A9	curRBuf
E1/10AB 	curLen
E1/10AD	curWBuf
E1/10AF	curOffset
E1/10B1	curEnd
E1/10B4	ourstacksave
E1/1155	stksaveflag ;only reserve space to save from $100 up to top
E1/1157	stretaddr
E1/1159	lentosave
E1/115B	oldstack
E1/115D	stacksavea
E1/115F	stacksavex
E1/1161	stacksavey
E1/1163	stacksaveb
E1/1165	stacksavep
E1/1167	nestedflag
E1/1169	dstack
E1/116B	dstate
E1/116C	E1End	;Note the last byte used should not be beyond $e11200
E1/1200	e1lapend

E1/154A..1589	SRQTBL (ADB: $40 byte table, complection vector for each device)

Start of GSFirmware:Serial:Serial.equates stuff
E1/158A  byte	Serial:NUMBER		EQUDS.B	1
E1/158B  byte	Serial:OLDCUR		EQUDS.B	1	;Saves cursor while in command
E1/158C  byte?	Serial OLDCUR2		EQUDS.B	1	;Saves cursor while in terminal mode
E1/158E  word	WR3 (indexed as $E1158E-$3B or -$3C,X or ,Y)
E1/1590  word	WR4 (indexed as $E1158E-$3B or -$3C,X or ,Y)
E1/1592  word	WR5 (indexed as $E1158E-$3B or -$3C,X or ,Y)
E1/1594  word	WRCD (indexed as $E1158E-$3B or -$3C,X or ,Y)
E1/1596  word	APTALKFLAG	;MSB says if Appletalk active (indexed from A-$C1)
E1/1598  word	ONEBYTEBUF	;Single char buffer used in XON/XOFF (indexed from A-$C1)
E1/159A  long	SAVEHEARTBEAT	;Time last char was received (indexed from A-$C1)
E1/159E  word	USERINT	;Interrupt instructions from user (app) (indexed from A-$C1)
E1/15A0  word	OLDRR0 (indexed from A-$C1)
E1/15A2  word	DISHONESTY (indexed from A-$C1)
E1/15A4  3 bytes	RCHGADR1 background printing recharge routine address
E1/15A7  3 bytes	RCHGADR2 background printing recharge routine address
Text Tools
E1/15AA  byte	ANDin
E1/15AB  byte	ORin
E1/15AC  byte	ANDout
E1/15AD  byte	ORout
E1/15AE  byte	ANDerr
E1/15AF  byte	ORerr
E1/15B0  3 bytes	DevType
E1/15B3  word	InDevPtr or DevPtr
E1/15B7  word	OutDevPt (only uses a word)
E1/15BB  word	ErrDevPt (only uses a word)
E1/15BF  word	ErrHook  (only a word)
GSFirmware:Serial:Serial.equates
E1/15C1  long	COMPVECT1 Serial interrupt completion vector
E1/15C5  long	COMPVECT2 Serial interrupt completion vector
E1/15C9  word	BID -- Memory Manager ID for serial buffer (port 1?)
E1/15CB  word	BID -- Memory Manager ID for serial buffer (port 2?)

Memory Manager
E1/15FE..E1/1AFF	Memory Manager Stuff
E1/15FE  word	Power up flag--set by monitor (high byte set to zero by monitor)
E1/15FF  byte	RAMDSKPWRUP  nonzero if powered up before
E1/1600  long	MemList	List of used segments
E1/1604  long	PurgeList	List of used but empty handles
E1/1608  long	FreeList	List of free handles
E1/160C  long	Mem01	Beginning of bank 1
E1/1610  long	Mem02	Beginning of bank 2
E1/1614  long	MemE0	Beginning of bank E0
E1/1618  long	MemE1	Beginning of bank E1
E1/161C  long	MemFF	Last segment
E1/1620  ????	GHSize	Handle Size global (word or long??)
E1/1624  word?	NumBanks	Number of 64K banks in machine

E1/1628..E1/163B	Stuff added for 5.0/ROM 3 by Steve Glass in Aug-88 (hinting + OOM queue)
E1/1628  long	LastLowHandle
E1/162C  long	LastHighHandle
E1/1630  long	NewHandleCount
E1/1634  long	ShortCutCount
E1/1638  long	FirstOOMPtr
RamDisk equates
E1/1640  word	BlockSize	Maximim size in blocks (word)
E1/1642  long	CurDiskSize	Current disk size in bytes
E1/1646  long	DiskHandles	Pointer to disk handles (single handle for ROM 3)
E1/164A  word	FormatFlag	Flag if RAM disk formatted (what does this mean, exactly?)
 DaveL's weirdly-placed global for 6.0
E1/167E	PendingSysBeep2  ;one word for SysBeep2/GetNextEvent (17-Sep-91 DAL for 6.0)
 Memory Manager vectorizing stuff
E1/1680..E1/16BB	Memory Manager private vectors
	(Be Very Careful--some of these survive a Command-Ctrl-Reset!)
E1/1680  jump	%MM:MMPatcher
E1/1684  jump	%MM:WarmStart
E1/1688  jump	%MM:Link
E1/168C  jump	%MM:CleanUp
E1/1690  jump	%MM:Search
E1/1694  jump	%MM:CheckFit
E1/1698  jump	%MM:Realloc
E1/169C  jump	%MM:GetFree
E1/16A0  jump	%MM:CreateHandles
E1/16A4  jump	%MM:MoveData
E1/16A8  jump	%MM:SearchFail
E1/16AC  jump	%MM:Compact
E1/16B0  jump	%MM:Purge
E1/16B4  jump	%MM:UserPurge
E1/16B8  jump	%MM:Restart

E1/1700..1AFF	HandleBuf   $E11700 - $E1AFF is used for handles (the initial group)

E1/1B00...???

Sound tools
E1/1DB0..	Sound Tools work area (GSToolbox:Sound:Snd.Equ.aii)
E1/1DB0	SYSVOLLOC	;Volume for sound tools is in hi byte

MIDISynth:NS.EQU: (and NoteSynth:NS.EQU)
*   12 bytes of reserved ram in bank E1.
*
* It will be set up like this:
E1/1DC4	cubbyhole 	equ $E11DC4		; 12 bytes of my own, forever
E1/1DC4	awake	equ cubbyhole	; set when Note syn has been initialized.
E1/1DC6	myDP	equ cubbyhole+2	; NoteSynth Direct Page
E1/1DC8	busy_Flag 	equ cubbyhole+4	; set when update is running.
E1/1DC9	old_vector	equ cubbyhole+5	; previous IRQ vector stored as 3 bytes
E1/1DCC	userjump	equ cubbyhole+8	; put jml here
E1/1DCD..1DCF	userUpdate	equ cubbyhole+9	; address of user's routine

E1/1DD0..1DD7	AbsClamps  8 bytes for absolute clamps value

E1/1DD8	In 5.0.3 and later, GetAddr($00FF) (in misc tools) returns this address
E1/1DD8	Buffering Queue Data Structure -- The firmware maintains four of these queues in buffer mode
E1/1DD8	QUEUE
E1/1DD8  word	QBASE  Queue buffer space begin
E1/1DDA  word	       Top part of buffer space begin
E1/1DDC  word	QBLEN  Length of buffer space
E1/1DDE  word	QHEAD  Pointer to first queue element
E1/1DE0  word	QTAIL  Pointer to next available buff location

E1/1DE2..@@@	three more buffers, as above?

E1/1E00 	E1BUFFER1 "GSFirmware:Serial:equates.aii"
E1/1F00	E1BUFFER2 "GSFirmware:Serial:equates.aii"

E1/2000..E1/9FFF	Super Hi-Res video buffer.
E1/2000..E1/3FFF	Part of Double Hi-Res page 1.
E1/4000..E1/5FFF	Part of Double Hi-Res page 2.
E1/9D00..E1/9DFF	SCBs for Super Hi-Res.  9D00..9DC7 for lines 0..199.
E1/9E00..E1/9FFF	Color tables for Super Hi-Res.
E1/A000..E1/BFFF	Available through Memory Manager.
E1/C000..E1/CFFF	Softswitches, etc (like bank zero).
E1/D000	ramdata (AppleTalk)
E1/D000..E1/FFFF	Language card (used by GS/OS).
E1/D600..E1/D9FF	ATLK: CmdTable
E1/DA00  long	ATLK: TickCount
E2/0000..EF/FFFF	Not decoded by the GS hardware.  No known use.
F0/0000..F7/FFFF	Used for ROM disks (3rd party).
F8/0000..FB/FFFF	"ROMTOOLS"  If "ROMTOOLS" appears here in high-ASCII, the
	system JSLs to $F8/0020 to install us.  There are old crusty
	versions of GSBug (early 1.5dX) on ROM chips that work like this,
	if you put them on a red "toy card."
F8/0000  8 bytes	ASCII string 'ROMTOOLS' (high bits ON) (EXROMSTR)
F8/0008  word	version number of ROMTOOLS (EXROMVER)
F8/000A..F8/001F	pad area (EXROMPAD)
F8/0020  entry	entry point to install ROMTOOLS (EXROMENTRY)
	* The entry point is called in 16 bit native mode.
	* (e=0, m=0, x=0) The entry point will execute
	* code to install any rom based extensions to the
	* tool set and return with an 'RTL' instruction
	* with the carry flag cleared.  If the rom is found,
	* the version number will be returned in the 16 bit
	* C register after the 'RTL' is executed.

FC/0000..FF/FFFF	ROM 3 image (256K)
FE/0000..FF/FFFF	ROM 1 image (128K)
FE/0000  entry	INITDISMGR, Initialize DISPATCH handler.  Initializes lots of
	vectors, calls TLBootInit, calls the ROMTOOLS vector.  The ROM
	calls this entry once on power up, and GS/OS calls it again early
	in the boot.
FE/0004	MEMORYPEEKER	;Install memory peeker desk acc
FE/0008	TODESKMGR	;Private CDA entry point
FE/000C	APTALKINIT	;Coldstart vector for AppleTalk
FE/0010	APTALKRESET	;Warmstart vector for AppleTalk
FE/0014	ADBSENDTL	;Vctr to send COMMAND to Keyuc
FE/0018	"Apple II" shout sound easter egg vector

Memory Manager analyzer triggers
FE/FFFC	NewDebugLoc	;Memory Manager logic analyzer trigger
FE/FFF8	DisposeDebugLoc	;Memory Manager logic analyzer trigger

FF/0000  entry	SERBASPATCH	;Serial code BASIC patch (XQSETUP)
FF/0003  entry	SERPASPATCH	;Serial code PASCAL patch (XQPASCAL)
FF/0006  entry	SEREXTPATCH	;Serial code EXTERNAL patch
FF/0009  entry	??? some sort of serial vector
FF/5600  entry	PROCONINIT	;Initialize protocol converter
FF/5A00  entry	PROCONINIT	;Initialize protocol converter
FF/6400  entry	DIAGS	;Diagnostics start here
FF/7400  entry	DIAGS	;Diagnostics start here
FF/8500  	MSGTBL	;Message 'DW' table starts here
FF/8EA0  entry	CPDEFTBL	;Control Panel BRAM default table
FF/8F00  entry	CTRL_PANEL	;Control Panel desk accessory
FF/F894  entry	COUT
FF/F897  entry	COUT1
FF/FB2B  entry	DOFFSVK
FF/CDE7  entry	STORCH
FF/CEC9  entry	SHOWCUR
FF/CEFC  entry	UPDATE
FF/CF59  entry	SETHOOKS

======================================================================================
======================================================================================

Default TPTs (Toolset order)		Default TPTs (ROM order)

TS  ROM 01  ROM 03  Name		TS  ROM 01  Name
--  ------  ------  ----		--  ------  ----
01  fe01b3  fe01fd  Tool Locator		01  fe01b3  Tool Locator
02  ff0000  fc0000  Memory Manager		04  fe06fd  QuickDraw II
03  fe900a  fea5bd  Misc Tools		03  fe900a  Misc Tools
04  fe06fd  fcfaeb  QuickDraw II		0C  fea747  Text Tools
05  feae6d  fec57b  Desk Manager		05  feae6d  Desk Manager
06  febb03  fee1cf  Event Manager		06  febb03  Event Manager
07  ffbf45  fcdbdf  Scheduler		0B  fec727  Integer Math
08  ff3e00  fccb53  Sound Tools		0A  fed2bb  SANE
09  ff8000  fcd6b2  ADB		02  ff0000  Memory Manager
0A  fed2bb  fc1ae7  SANE		0D  ff00c0  (RAMdisk tools)
0B  fec727  fef043  Integer Math		08  ff3e00  Sound Tools
0C  fea747  febf19  Text Tools		09  ff8000  ADB
0D  ff00c0  fc00c0  (RAMdisk tools)		07  ffbf45  Scheduler
0E  ------  fd0000  Window Manager
0F  ------  fd554a  Menu Manager		TS  ROM 03  Name
10  ------  fd9020  Control Manager		--  ------  ----
11  ------  ------  Loader		02  fc0000  Memory Manager
12  ------  ------  QD Aux		0D  fc00c0  (RAMdisk tools)
13  ------  ------  Print Manager		0A  fc1ae7  SANE
14  ------  fc4765  Line Edit		14  fc4765  Line Edit
15  ------  fc6656  Dialog Manager		15  fc6656  Dialog Manager
16  ------  fc9382  Scrap Manager		16  fc9382  Scrap Manager
17  ------  ------  Standard File		1B  fc9e1e  Font Manager
18  ------  ------  (reserved)		08  fccb53  Sound Tools
19  ------  ------  Note Synth		09  fcd6b2  ADB
1A  ------  ------  Note Seq		07  fcdbdf  Scheduler
1B  ------  fc9e1e  Font Manager		1C  fce701  List Manager
1C  ------  fce701  List Manager		04  fcfaeb  QuickDraw II
			0E  fd0000  Window Manager
			0F  fd554a  Menu Manager
			10  fd9020  Control Manager
			01  fe01fd  Tool Locator
			03  fea5bd  Misc Tools
			0C  febf19  Text Tools
			05  fec57b  Desk Manager
			06  fee1cf  Event Manager
			0B  fef043  Integer Math
[end of document]
